package com.yonyou.brigade.third_parties.didi.service;

import com.alibaba.fastjson.JSONObject;
import com.yonyou.brigade.third_parties.didi.model.third.InvoiceApplyParam;
import com.yonyou.brigade.third_parties.didi.model.third.InvoiceQueryParam;
import com.yonyou.brigade.third_parties.didi.model.third.InvoiceTitle;
import com.yonyou.brigade.third_parties.didi.model.third.InvoiceType;

import java.util.List;

/**
 * 滴滴发票操作 服务
 *
 * @author kangfw5
 */
public interface IDiDiInvoiceService {

    /**
     * 获取普票抬头列表
     *
     * @param tenantId    租户ID
     * @param orgPk       组织PK
     * @param invoiceType 发票类型
     * @return {@link InvoiceTitle} 发票抬头
     */
    List<InvoiceTitle> getTitleList(String tenantId, String orgPk, InvoiceType invoiceType);

    /**
     * 按行程申请开票
     *
     * @param tenantId          租户ID
     * @param orgPk             组织PK
     * @param userId            用户ID
     * @param invoiceApplyParam 开票参数
     * @return
     */
    String applyForInvoice(String tenantId, String orgPk, String userId, InvoiceApplyParam invoiceApplyParam);

    /**
     * 发票查询
     *
     * @param tenantId          租户ID
     * @param orgPk             组织PK
     * @param invoiceQueryParam 查询参数
     * @return
     */
    JSONObject queryInvoice(String tenantId, String orgPk, InvoiceQueryParam invoiceQueryParam);

    /**
     * 下载电子发票
     *
     * @param tenantId  租户ID
     * @param invoiceId 发票ID
     * @return 成功失败
     */
    List<String> downloadInvoice(String tenantId, String invoiceId);
}
